import axios from 'axios'
import { toast } from 'react-toastify'

// 创建 Axios 实例
const axiosInstance = axios.create({
  timeout: 5000 // 超时设置
})

// 添加请求拦截器
axiosInstance.interceptors.request.use(
  config => {
    // 显示加载动画，可以使用你的加载组件
    console.log('Loading start...')
    return config
  },
  error => {
    // 处理请求错误
    console.error('Request error:', error)
    toast.error('请求失败，请重试!')
    return Promise.reject(error)
  }
)

// 添加响应拦截器
axiosInstance.interceptors.response.use(
  response => {
    // 隐藏加载动画
    console.log('Loading end...')
    return response.data // 直接返回数据
  },
  error => {
    // 隐藏加载动画
    console.log('Loading end...')

    // 处理错误码
    const status = error.response ? error.response.status : null

    switch (status) {
      case 400:
        toast.error('请求错误 (400)')
        break
      case 401:
        toast.error('未授权，登录后重试 (401)')
        break
      case 404:
        toast.error('请求地址未找到 (404)')
        break
      case 500:
        toast.error('服务器错误 (500)')
        break
      default:
        toast.error('网络错误，稍后再试')
        break
    }

    return Promise.reject(error)
  }
)

export default axiosInstance
